package io.acna.blog.service;

import io.acna.basedao.mybatis.service.IBaseService;
import io.acna.blog.core.IndieSession;
import io.acna.blog.core.TagType;
import io.acna.blog.entities.Tag;
import io.acna.mybatis.plugins.core.IndieCondition;

import java.util.List;

public interface ITagService extends IBaseService<Tag> {

    /**
     * 添加标签
     *
     * @param tag     标签实例
     * @param session session
     * @return 标签编号
     */
    long save(Tag tag, IndieSession session);

    /**
     * 删除标签
     *
     * @param id      标签编号
     * @param session session
     */
    void remove(long id, IndieSession session);

    /**
     * 查询指定的标签类别
     *
     * @param qc   查询条件
     * @param type 标签类型
     * @return 标签列表
     */
    List<Tag> findList(IndieCondition qc, TagType type);


    /**
     * 指定标签下添加文章
     *
     * @param id        标签编号
     * @param articleId 文章编号
     */

    void addArticle(long id, long articleId);

    /**
     * 指定标签下删除文章
     *
     * @param id        标签编号
     * @param articleId 文章编号
     */
    void delArticle(long id, long articleId);

}
